import deepClone from '@/libs/deepClone'

function useDevTypeBaseDataConfig() {
  // 设备类型的通信配置
  const defaultDevTypeBaseDataConfig: DeviceType.DevTypeBaseData[] = []
  let devTypeBaseDataConfig = ref<typeof defaultDevTypeBaseDataConfig>(
    deepClone(defaultDevTypeBaseDataConfig)
  )
  function setDevTypeBaseDataConfig(data: typeof defaultDevTypeBaseDataConfig) {
    devTypeBaseDataConfig.value = data
  }

  // 设备类型通信组件的通信配置
  const defaultDevTypeModuleBaseDataConfig: AddDevType.DevTypeBaseData[] = []
  let devTypeModuleBaseDataConfig = ref<typeof defaultDevTypeModuleBaseDataConfig>(
    deepClone(defaultDevTypeModuleBaseDataConfig)
  )
  function setDevTypeModuleBaseDataConfig(data: typeof defaultDevTypeModuleBaseDataConfig) {
    devTypeModuleBaseDataConfig.value = data
  }

  // 重置配置状态
  function initDevTypeBaseDataConfig(option?: {
    initDevTypeConConfig?: boolean
    initDevTypeModuleConConfig?: boolean
  }) {
    setDevTypeBaseDataConfig(deepClone(defaultDevTypeBaseDataConfig))
    setDevTypeModuleBaseDataConfig(deepClone(defaultDevTypeModuleBaseDataConfig))
  }

  function devTypeBaseDataConfig2devTypeModuleBaseDataConfig(
    devTypeBaseDataList: DeviceType.DevTypeBaseData[]
  ) {
    // 存储原始数据
    setDevTypeBaseDataConfig(devTypeBaseDataList)

    //? 将获取到的设备类型的基本信息配置转为组件所需的数据 start
    let devTypeModuleBaseDataConfig: typeof defaultDevTypeModuleBaseDataConfig = []

    for (let i = 0; i < devTypeBaseDataList.length; i++) {
      const devTypeBaseData = devTypeBaseDataList[i]
      devTypeModuleBaseDataConfig.push({
        devTypeBaseDataId: devTypeBaseData.devTypeBaseDataId,
        devTypeBaseDataName: devTypeBaseData.devTypeBaseDataName,
        devTypeId: devTypeBaseData.devTypeId,
        devTypeBaseDataCode: devTypeBaseData.devTypeBaseDataCode,
        status: devTypeBaseData.status
      })
    }
    setDevTypeModuleBaseDataConfig(devTypeModuleBaseDataConfig)
    //? 将获取到的设备类型的基本信息配置转为组件所需的数据 end
  }

  return {
    devTypeBaseDataConfig,
    devTypeModuleBaseDataConfig,
    devTypeBaseDataConfig2devTypeModuleBaseDataConfig,
    initDevTypeBaseDataConfig
  }
}
export default useDevTypeBaseDataConfig
